﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Offline.Core;
using System.Data;

namespace Crosland.Offline.Logic
{
    public class ClienteLogic
    {
        /// <summary>
        /// Permite buscar clientes en base a los criterios de búsqueda
        /// </summary>
        /// <param name="codigo"></param>
        /// <param name="nombre"></param>
        /// <param name="tipoDoc"></param>
        /// <param name="numDoc"></param>
        /// <returns></returns>
        public List<Cliente> BuscarClientes(string codigo, string nombre, string tipoDoc, string numDoc)
        {
            return Factory.GetClienteDao().GetByCriteria(codigo, nombre, tipoDoc, numDoc);
        }

        /// <summary>
        /// Permite grabar o actualizar los datos del cliente
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public string GrabarCliente(Cliente entity, DatoComercialCliente comercial)
        {
            try
            {
                string id = string.Empty;

                if (string.IsNullOrEmpty(entity.ID))
                {
                    id = Factory.GetClienteDao().Save(entity);
                                        
                    Interlocutores interlocutor = new Interlocutores();
                    interlocutor.Kunnr = id;
                    interlocutor.Vkorg = "";
                    interlocutor.Vtweg = "30"; //Canal Minorista
                    interlocutor.Spart = "";
                    interlocutor.Kunn2 = id;
                    interlocutor.Parvw = "AG"; //Solicitante 
                    Factory.GetInterlocutoresDao().Save(interlocutor);
                    interlocutor.Parvw = "RE";
                    Factory.GetInterlocutoresDao().Save(interlocutor);
                    interlocutor.Parvw = "RG";
                    Factory.GetInterlocutoresDao().Save(interlocutor);
                    interlocutor.Parvw = "WE";
                    Factory.GetInterlocutoresDao().Save(interlocutor);

                }
                else 
                {
                    Factory.GetClienteDao().Update(entity);
                    id = entity.ID;
                }

                return id;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
        }

        /// <summary>
        /// Obtiene los datos de un cliente
        /// </summary>
        /// <param name="codCliente"></param>
        /// <returns></returns>
        public Cliente ObtenerCliente(string codCliente)
        {
            return Factory.GetClienteDao().GetById(codCliente);
        }

        /// <summary>
        /// Permite obtener los datos del interlocutor
        /// </summary>
        /// <param name="codCliente"></param>
        /// <param name="parVw"></param>
        /// <returns></returns>
        public Cliente ObtenerInterlocutor(string codCliente, string parVw)
        {
            return Factory.GetClienteDao().ObtenerInterlocutor(codCliente, parVw);
        }
    }
}
